def script_handler_addon(cs)
  if cs =~ /^sr\s?(\d+)?$/
    room = $1 ? Room[$1.to_i] : Room.current
    
    show  = "/#{'='*78}\\\n"
    show += "|#{fill_str(" [#{Map.rev_mapping(room.db_id)}-#{room.area.num}] \x1B[32m#{room.name}\x1B[0m", 78)}|\n"
    show += "|#{'-'*78}|\n"
    exits_str = ''
    others_str = ''
    room.exits.keys.each {|d|
      if ['n','e','s','w','u','d'].include?(d)
        add_str = Map::DIR_LONG[d]
        add_str = "(#{add_str})" if room.exits[d]['door']
        add_str = "\x1B[31m#{add_str}\x1B[32m" unless Room.exist?(room.exits[d]['to_id'])
        exits_str += add_str + " "
      else
        others_str += d + " "
      end
    }
    show += "|#{fill_str(" \x1B[32m[Exits: #{exits_str}#{others_str}]\x1B[0m", 78)}|\n"
    show += "\\#{'='*78}/\n"
    echo(show)
    cs = nil
  elsif cs =~ /^dr (\w)$/
    Room.add_door(Room.current.db_id, $1)
    cs = nil
  end
rescue nil
ensure return cs
end

def fill_str(str, len, chr=' ')
  return str + chr*[0, len-str.clean_colors.length].max
end